package cn.iocoder.yudao.module.system.wechat_card.dto.create_card;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
public class CardBaseInfoDTO implements Serializable {

    @Schema(description = "礼品卡最大可赠送次数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "礼品卡最大可赠送次数不为空")
    private Integer max_give_friend_times;

    @Schema(description = "礼品卡的价格，以分为单位", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "礼品卡的价格，以分为单位不为空")
    private GiftcardInfoDTO giftcard_info;

    @Schema(description = "卡券的商户logo，尺寸为300*300，须先将logo上传至CDN，否则报错。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "卡券的商户logo不为空")
    private String logo_url;

    @Schema(description = "商户名字,字数上限为12个汉字。（填写直接提供服务的商户名）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "商户名字不为空")
    private String brand_name;

    @Schema(description = "code码展示类型" +
            "（CODE_TYPE_TEXT，文本； " +
            "CODE_TYPE_BARCODE，一维码 ；" +
            "CODE_TYPE_QRCODE，二维码； " +
            "CODE_TYPE_ONLY_QRCODE”,二维码无code显示；" +
            "CODE_TYPE_ONLY_BARCODE”,一维码无code显示；）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "code码展示类型")
    private String code_type;

    @Schema(description = "券名，字数上限为9个汉字。(建议涵盖卡券属性、服务及金额)", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "券名不为空")
    private String title;

    @Schema(description = "券颜色。按色彩规范标注填写Color010-Color100", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "券颜色不为空")
    private String color;

    @Schema(description = "使用提醒，字数上限为12个汉字。（一句话描述，展示在首页，示例：请出示二维码核销卡券）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "使用提醒不为空")
    private String notice;

    @Schema(description = "客服电话", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String service_phone;

    @Schema(description = "使用说明。长文本描述，可以分行，上限为1000个汉字。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "使用说明不为空")
    private String description;

    @Schema(description = "使用日期，有效期的信息。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "使用日期不为空")
    private DateInfoDTO date_info;

    @Schema(description = "商品信息。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "商品信息不为空")
    private SkuDTO sku;

    @Schema(description = "每人最大领取次数，须填0。", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Integer get_limit;

    @Schema(description = "是否自定义code码。填写true或false，不填代表默认为false。", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Boolean use_custom_code;

    @Schema(description = "卡券是否可转赠，填写true或false,true代表可转赠。默认为true。", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Boolean can_give_friend;

    @Schema(description = "门店位置ID。商户需在mp平台上录入门店信息或调用批量导入门店信息接口获取门店位置ID。", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private List<Integer> location_id_list;

    @Schema(description = "礼品卡居中的按钮，仅在卡券状 态正常(可以核销)时显示，建议用于引导使用或者充值流程", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String center_title;

    @Schema(description = "居中按钮的引导wording", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String center_sub_title;

    @Schema(description = "居中入口的链接", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String center_url;

    @Schema(description = "自定义cell对应的小程序username，格式为公众号原始id@app", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String center_app_brand_user_name;

    @Schema(description = "自定义cell对应的小程序路径", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String center_app_brand_pass;

    @Schema(description = "商户自定义入口名称，与custom_url字段共同使用，长度限制在5个汉字内。", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String custom_url_name;

    @Schema(description = "商户自定义入口跳转外链的地址链接,跳转页面内容需与自定义cell名称保持匹配。", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String custom_url;

    @Schema(description = "自定义cell对应的小程序username，格式为公众号原始id@app", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String custom_app_brand_user_name;

    @Schema(description = "自定义cell对应的小程序路径", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String custom_app_brand_pass;

    @Schema(description = "营销场景的自定义入口", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String promotion_url_name;

    @Schema(description = "入口跳转外链的地址链接", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String promotion_url;

    @Schema(description = "自定义cell对应的小程序username，格式为公众号原始id@app", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String promotion_app_brand_user_name;

    @Schema(description = "自定义cell对应的小程序路径", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String promotion_app_brand_pass;

    @Schema(description = "true为用户点击进入礼品卡时是否推送事件。", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Boolean need_push_on_view;

}
